package testes;

import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;

import classes.Categoria;
import classes.Iten;

public class ItenTest {

	private Iten i1;
	private Categoria categoria;

	@Before
	public void setUp() throws Exception {
		i1 = new Iten("Nome teste", "Descricao teste", categoria.FILME);
	}

	@Test
	public void testConstrutor() throws Exception {

		try {
			i1 = new Iten(null, "Descricao teste", categoria.FILME);
			Assert.fail("Todos os dados sao necessarios!");
		} catch (Exception ex) {
			Assert.assertEquals("Exception nao esperada",
					"Todos os dados sao necessarios!", ex.getMessage());
		}

		try {
			i1 = new Iten("", "Descricao teste", categoria.FILME);
			Assert.fail("Todos os dados sao necessarios!");
		} catch (Exception ex) {
			Assert.assertEquals("Exception nao esperada",
					"Todos os dados sao necessarios!", ex.getMessage());
		}

		try {
			i1 = new Iten("Nome teste", null, categoria.FILME);
			Assert.fail("Todos os dados sao necessarios!");
		} catch (Exception ex) {
			Assert.assertEquals("Exception nao esperada",
					"Todos os dados sao necessarios!", ex.getMessage());
		}

		try {
			i1 = new Iten("Nome teste", "", categoria.FILME);
			Assert.fail("Todos os dados sao necessarios!");
		} catch (Exception ex) {
			Assert.assertEquals("Exception nao esperada",
					"Todos os dados sao necessarios!", ex.getMessage());
		}
		
		try{
			i1 = new Iten("Nome teste", "Descricao teste", null);
			Assert.fail("Categoria invalida.");
		} catch (Exception ex) {
			Assert.assertEquals("Exception nao esperada",
					"Categoria invalida.", ex.getMessage());
		}
	}

	@Test
	public void testGetNome() {
		Assert.assertEquals("Erro no getNome", "Nome teste", i1.getNomeIten());
	}

	@Test
	public void testSetNome() {
		try {
			i1.setNome(null);
			Assert.fail("Todos os dados sao necessarios!");
		} catch (Exception ex) {
			Assert.assertEquals("Exception nao esperada",
					"Todos os dados sao necessarios!", ex.getMessage());
		}

		try {
			i1.setNome("");
			Assert.fail("Todos os dados sao necessarios!");
		} catch (Exception ex) {
			Assert.assertEquals("Exception nao esperada",
					"Todos os dados sao necessarios!", ex.getMessage());
		}
	}

	@Test
	public void testGetDescricao() {
		Assert.assertEquals("Erro no getDescricao", "Descricao teste",
				i1.getDescricao());
	}

	@Test
	public void testSetDescricao() {
		try {
			i1.setDescricao(null);
			Assert.fail("Todos os dados sao necessarios!");
		} catch (Exception ex) {
			Assert.assertEquals("Exception nao esperada",
					"Todos os dados sao necessarios!", ex.getMessage());
		}

		try {
			i1.setDescricao("");
			Assert.fail("Todos os dados sao necessarios!");
		} catch (Exception ex) {
			Assert.assertEquals("Exception nao esperada",
					"Todos os dados sao necessarios!", ex.getMessage());
		}
	}
}
